package com.joker.cart.service;

import com.joker.cart.domain.CartVO;
import com.joker.cart.domain.PmsCart;

import java.util.List;

/**
 * 购物车Service接口
 *
 * @author jorker
 * @date 2024-12-27
 */
public interface IPmsCartService
{
    /**
     * 查询购物车
     *
     * @param id 购物车主键
     * @return 购物车
     */
    public PmsCart selectPmsCartById(Long id);

    /**
     * 查询购物车列
     * @return 购物车集合
     */
    public List<CartVO> selectPmsCartList();

    /**
     * 新增购物车
     *
     * @param pmsCart 购物车
     * @return 结果
     */
    public int insertPmsCart(PmsCart pmsCart);

    /**
     * 修改购物车
     *
     * @param pmsCart 购物车
     * @return 结果
     */
    public int updatePmsCart(PmsCart pmsCart);

    /**
     * 批量删除购物车
     *
     * @param ids 需要删除的购物车主键集合
     * @return 结果
     */
    public int deletePmsCartByIds(Long[] ids);

    /**
     * 删除购物车信息
     *
     * @param id 购物车主键
     * @return 结果
     */
    public int deletePmsCartById(Long id);

    /**
     * 通过skuId查询
     * @param skuId skuId
     * @return
     */
    PmsCart selectBySkuId(Long skuId);

    /**
     * 获取登录人购物车列表
     * @return 购物车
     */
    List<CartVO> showCart();

    /**
     * 修改购物车商品数量
     * @param skuId skuId
     * @param count 数量
     */
    void updateSkuCount(Long skuId, Long count);

    /**
     * 从购物车删除商品
     * @param skuId sku
     */
    void removeSkuFromCart(Long skuId);

    /**
     * 添加商品到购物车
     * @param skuId skuId
     * @param count 数量
     */
    void addSkuInCart(Long skuId, Long count);

    /**
     * 通过用户id和商户id
     * @param merchantId 商户id
     * @param userId 用户id
     * @return 购物车
     */
    PmsCart selectByMerchantIdAndUser(Long merchantId, Long userId);

    /**
     * 修改选中状态
     * @param skuId
     * @param checked
     */
    void updateCheck(Long skuId, Boolean checked);

    /**
     * 获取选中的购物车明细
     * @return
     */
    List<CartVO> listCheck();


    /**
     * 删除支付过的
     * @param skuIds
     */
    void removePayed(Long... skuIds);

}
